|
デリゲート (delegate、デレゲート) とは、C#、Visual Basic .NETなどの、.NET Frameworkのプログラミング言語にある機能である。 == 概要 == デリゲートは、オブジェクトへの参照と関数オブジェクトへの参照をペアにして持つものである。オブジェクト指向プログラミングとしては、メソッドをカプセル化するクラスとも言える。型安全であるという特徴がある。 C++の「メンバ関数を指すポインタ」や、Object Pascal(Delphi)の「インスタンスのメソッドへのポインタを格納する、メソッドポインタ」と同様のものである(DelphiもC#もアンダース・ヘルスバーグによる設計である)。また、Microsoft Visual J++も、Javaと非互換のデリゲートを導入したが、.NET Frameworkのデリゲートはこれらを発展させたものである。 デリゲートは主に、イベント処理での活用(コールバック処理のカスタマイズ)を想定している。Javaなどでのインターフェイスを利用したイベント処理と比べ、メソッド名を自由に宣言できる、振る舞いをカスタマイズするためにインターフェイスの実装やスーパークラスの継承を行なう必要がない、などの利点がある。 C#では複数のデリゲートを + , - , += , -= 演算子によって結合・分離させることもできる(マルチキャストデリゲート〔方法 : デリゲートを結合する (マルチキャスト デリゲート) (C# プログラミング ガイド) 〕)。また、デリゲートの追加・削除と呼び出しに制約を加えて安全なコードを記述するための機構としてevent キーワードが用意されている〔event (C# リファレンス) 〕 〔方法 : イベント サブスクリプションとサブスクリプションの解除 (C# プログラミング ガイド) 〕。event キーワードで修飾されたデリゲート型メンバーに、外部からイベントのサブスクリプション(購読)を追加・削除する手段としては、+= 演算子および-= 演算子によるアクセスのみが許可される。また、event キーワードで修飾されたデリゲート型メンバーを、クラス外部からメソッドとして呼び出すことはできない。なお、+= 演算子および-= 演算子の処理をカスタマイズするために、event キーワードで修飾されたデリゲート型メンバーのadd アクセッサーとremove アクセッサーを明示的に記述することも可能である。そのほか、スレッドプールを利用して非同期でデリゲートを実行する機能も存在する(非同期デリゲート〔デリゲートを使用した非同期プログラミング 〕)。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「デリゲート (プログラミング)」の詳細全文を読む スポンサード リンク
|